{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import SymPy: symbols, sympy, Sym\n",
    "using GAlgebra"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "galgebra.printer.Format()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The following follows definitions in _Homogeneous Coordinates for Computational Geometry_ by Hestenes and Rockwood."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PyObject <galgebra.ga.Ga object at 0x119eba160>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "CGA3D = galgebra.ga.Ga(\"e_1 e_2 e_3 e e_{0}\", g=\"1 0 0 0 0,0 1 0 0 0,0 0 1 0 0,0 0 0 0 -1,0 0 0 -1 0\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"Iinv+\""
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "galgebra.ga.Ga.dual_mode_value = \"Iinv+\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\[\\left[ \\begin{array}{rrrrr}1&0&0&0&0\\\\0&1&0&0&0\\\\0&0&1&0&0\\\\0&0&0&0&-1\\\\0&0&0&-1&0\\end{array}\\right]\\]"
      ],
      "text/plain": [
       "5×5 Array{Sym,2}:\n",
       " 1  0  0   0   0\n",
       " 0  1  0   0   0\n",
       " 0  0  1   0   0\n",
       " 0  0  0   0  -1\n",
       " 0  0  0  -1   0"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sympy.Matrix(CGA3D.g)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*} \\boldsymbol{e}_{1} + \\boldsymbol{e}_{2} + \\boldsymbol{e}_{3} + \\boldsymbol{e} + \\boldsymbol{e}_{{0}}\\end{align*}"
      ],
      "text/plain": [
       " \\boldsymbol{e}_{1} + \\boldsymbol{e}_{2} + \\boldsymbol{e}_{3} + \\boldsymbol{e} + \\boldsymbol{e}_{{0}}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e1,e2,e3,e,e0 = CGA3D.mv()\n",
    "e1+e2+e3+e+e0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*}A  + A^{1} \\boldsymbol{e}_{1} + A^{2} \\boldsymbol{e}_{2} + A^{3} \\boldsymbol{e}_{3} + A^{} \\boldsymbol{e} + A^{{0}} \\boldsymbol{e}_{{0}} + A^{12} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2} + A^{13} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3} + A^{1} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e} + A^{1{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{2} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} + A^{2{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} + A^{3} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{3{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{{0}} \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{123} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{12} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} + A^{12{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} + A^{13} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{13{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{1{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{23{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{2{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{3{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{123} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{123{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{12{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{13{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{23{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{123{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}\\end{align*}"
      ],
      "text/plain": [
       "A  + A^{1} \\boldsymbol{e}_{1} + A^{2} \\boldsymbol{e}_{2} + A^{3} \\boldsymbol{e}_{3} + A^{} \\boldsymbol{e} + A^{{0}} \\boldsymbol{e}_{{0}} + A^{12} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2} + A^{13} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3} + A^{1} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e} + A^{1{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{2} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} + A^{2{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} + A^{3} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{3{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{{0}} \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{123} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{12} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} + A^{12{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} + A^{13} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{13{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{1{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{23{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{2{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{3{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{123} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{123{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{12{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{13{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{23{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{123{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A = CGA3D.mv(\"A\", \"mv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}\\end{align*}"
      ],
      "text/plain": [
       " \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "I = CGA3D.I()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       " \\begin{align*}  & A  \\\\  &  + A^{1} \\boldsymbol{e}_{1} + A^{2} \\boldsymbol{e}_{2} + A^{3} \\boldsymbol{e}_{3} + A^{} \\boldsymbol{e} + A^{{0}} \\boldsymbol{e}_{{0}} \\\\  &  + A^{12} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2} + A^{13} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3} + A^{1} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e} + A^{1{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{2} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} + A^{2{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} + A^{3} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{3{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{{0}} \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} \\\\  &  + A^{123} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{12} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} + A^{12{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} + A^{13} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{13{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{1{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{23{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{2{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{3{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} \\\\  &  + A^{123} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{123{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{12{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{13{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{23{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} \\\\  &  + A^{123{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}  \\end{align*} \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(\"text/latex\", A.Fmt(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       " \\begin{align*}  & A^{123{0}}  \\\\  &  + A^{23{0}} \\boldsymbol{e}_{1} - A^{13{0}} \\boldsymbol{e}_{2} + A^{12{0}} \\boldsymbol{e}_{3} - A^{123} \\boldsymbol{e} + A^{123{0}} \\boldsymbol{e}_{{0}} \\\\  &  - A^{3{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2} + A^{2{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3} - A^{23} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e} + A^{23{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{{0}} - A^{1{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{13} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} - A^{13{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} - A^{12} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{12{0}} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{123} \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} \\\\  &  - A^{{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3} + A^{3} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e} - A^{3{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{{0}} - A^{2} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} + A^{2{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} + A^{23} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{1} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} - A^{1{0}} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} - A^{13} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{12} \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} \\\\  &  + A^{} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e} - A^{{0}} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}} - A^{3} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} + A^{2} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} - A^{1} \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}} \\\\  &  - A \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}  \\end{align*} \n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(\"text/latex\", (A').Fmt(2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}\\end{align*}"
      ],
      "text/plain": [
       " \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*}- \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}\\end{align*}"
      ],
      "text/plain": [
       "- \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\wedge \\boldsymbol{e}_{{0}}"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(I)⁻¹"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "I == - (I)⁻¹"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dual(A) == A * inv(I)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "A' == A * (I)⁻¹"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "true"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(I)⁻¹ == (I)ǂ == I^2 * I"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*} \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}\\end{align*}"
      ],
      "text/plain": [
       " \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "\\begin{align*}- \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}}\\end{align*}"
      ],
      "text/plain": [
       "- \\boldsymbol{e}_{1}\\wedge \\boldsymbol{e}_{2}\\wedge \\boldsymbol{e}_{3}\\wedge \\boldsymbol{e}_{{0}}"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "e0'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 1.1.0",
   "language": "julia",
   "name": "julia-1.1"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "1.1.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
